Knowledge engineering is the use of computer systems to model complex, functional knowledge. While the generation of any Turing machine representative of external knowledge could be argued as knowledge engineering, knowledge engineering and its related fields such as knowledge management occupy a more specific realm of computer science combining databases and literate programming for intentional modeling and access to human knowledge. Examples of knowledge engineering in practice include semantic web ontologies such as the Dublin Core and Enterprise Decision Support Systems (EDSS) like the Department of the Interior's Wildland Fire Decision Support System (WFDSS).
Knowledge engineering has its historical roots in the expert systems research of the 1960s and 1970s throughout the academic and business Artificial Intelligence (AI) world. Expert systems are an earlier form of knowledge engineering where subject matter experts (SME) codify and systematize their knowledge into a functional knowledge store. For example, the Stanford Heuristic Programming Project created one of the most famous expert systems, MYCIN, in the 1970s to identify infectious bacteria by asking a branching series of questions and relating the answer to a base of over 600 rules through an inference engine.
While there was considerable success with early expert systems and knowledge engineering, technical problems and over-complication have largely inhibited large scale use. For example, despite MYCIN's 69% accuracy (higher than the average performance of human SMEs), the system was never used in practice due to how difficult and time consuming it was to use in practice. Indeed, just the development of MYCIN's relatively small production rules system took over five years.
The so-called “AI winter” began in the 1980s and peaked during the 1990s. This period of disillusionment with the promises of artificial intelligence in areas such as natural language processing and machine learning led to dramatically reduced funding and interest in AI technology. However, while many of the more overhyped implications of AI research were unrealistic or overly simplistic, nearly all areas of AI study yielded considerable improvements and innovations that are in use and continued development today. Due to the stigma of AI, many of these resurgent fields now operate under new names, such as “expert systems” research becoming “knowledge engineering.”
While the renewed interest in knowledge engineering has yielded considerable improvements and diversification in its technical representation and application, the fundamental problem that limited the success of expert systems remains the main obstacle to wide spread adoption of knowledge engineering: the technical complexity in the use and, in particular, engineering of knowledge based systems has limited their use such that the vision of broad categories of non-programmer SMEs codifying their knowledge functionally has not been realized.
For example, powerful technologies such as Knowledge Acquisition and Documentation Structuring (KADS) and C Language Integrated Production System (CLIPS) along with their many modern derivatives have been developed to improve and extend knowledge engineering. Furthermore, there was a large interest in the use of knowledge engineering techniques for business rules logic around the turn of the century using software like BizTalk and specifications like Business Process Execution Language (BPEL). However, these different technological innovations, while finding specialized use among the most dedicated and technical parties, have failed to reach non-technical SMEs or “ordinary people” due to their highly complex and technical character.
Concurrent with this perennial “technicalization” of knowledge engineering have been the increased ubiquity of computer technology in everyday life and rapid usability improvements in graphical user interfaces (GUIs). As computer technology has become more omnipresent, several researchers and companies have sought to make more powerful digital content creation available to the masses through more ergonomic GUIs.
Some attempts have been made to apply these simpler interfaces to the development of computer programs such as through HyperCard or Squeak, these programming environments do not present the knowledge modeling and representation concepts of knowledge engineering and are thus unsuited to the development of knowledge bases. While these systems can successfully codify the rules, they lack capabilities for easily capturing and representing complex knowledge to the end user, requiring outside extension or sophisticated programmatic extension. Thus, the continued and present problem is how to make knowledge engineering accessible for the lay SME.